﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using System.Data.SqlClient;
namespace BaseDatos
{
    public static class BDAlmacen
    {
        private static string conexionCentral = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAurora; Integrated Security=true";
        private static string conexionSucursal1 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal; Integrated Security=true";
        private static string conexionSucursal2 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal2; Integrated Security=true";

        public static List<LoteAlmacen> casiCaducados()
        {
            SqlConnection sql = null;
            List<LoteAlmacen> lotealmacenes = null;
            try
            {
                sql = new SqlConnection(conexionCentral);
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "SELECT P.NombreComercial, Pr.Nombre, L.FechaVencimiento,L.Cantidad, A.StockMinimo FROM Almacen as A , Lote as L , Producto as P ,Proveedor Pr where Pr.IdProveedor=P.IdProveedor and P.IdProducto=A.IdProducto and A.IdLote = L.IdLote and L.Caducado='false' and L.Agotado='false' ORDER BY  L.FechaVencimiento ASC";
                sql.Open();
               SqlDataReader reader = comando.ExecuteReader();
               lotealmacenes = new List<LoteAlmacen>();
               while (reader.Read())
               {
                   LoteAlmacen lotealmacen = new LoteAlmacen();
                   lotealmacen.cantidad = int.Parse(reader["Cantidad"].ToString());
                   lotealmacen.FechaVencimiento = DateTime.Parse(reader["FechaVencimiento"].ToString());
                   lotealmacen.NombreComercial = reader["NombreComercial"].ToString();
                   lotealmacen.NombreProveedor = reader["Nombre"].ToString();
                   lotealmacen.StockMinimo = int.Parse(reader["StockMinimo"].ToString());
                   lotealmacenes.Add(lotealmacen);

               }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sql != null)
                    sql.Dispose();
            }
            return lotealmacenes;
        }
        public static void InsertarAlmacen(Almacen almacen)
        {
            SqlConnection sql = null;
            try
            {
                sql = new SqlConnection(conexionCentral);
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "INSERT INTO Almacen (IdProducto,IdLote, StockMinimo) VALUES (@idProducto,@idLote,@stockMinimo)";
                comando.Parameters.AddWithValue("idProducto",almacen.producto.idProducto);
                comando.Parameters.AddWithValue("idLote",almacen.lote.IdLote);
                comando.Parameters.AddWithValue("stockMinimo",almacen.stockMinimo);
                sql.Open();
                comando.ExecuteNonQuery();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sql != null)
                    sql.Dispose();
            }
        }
    }
}
